package ${basePackage}.web.api.impl.rest.${moduleName};

import org.hibernate.validator.constraints.NotBlank;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.ResponseEntity;

import javax.inject.Inject;
import javax.validation.*;

import java.util.Date;
import java.util.List;

/**
* 代码生成器自动生成
* Date:${.now}
* @author
*/
@RestController
public class ${className}Controller implements ${className}RestApi{


    private ${className}Service service;

    private ${className}Assembler assembler;

    @Inject
    public set${className}Service(${className}Service service){
        this.service = service ;
    }

    @Inject
    public set${className}Assembler(${className}Assembler assembler){
        this.assembler = assembler ;
    }

    /* ************************************************************************************ *
       ***************************************  增  ***************************************
    * ************************************************************************************* */

    /**
    * 新增${className}
    * TODO 补充调整代码
    *
    * @param command
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> add(@RequestBody @Valid ${className}CreateCommand command) {
//     ${className} entity = assembler.to${className}(command);
//     entity = service.create(entity);
//     return ResponseEntity.ok(InvokeResult.ok());
//  }

    /* ************************************************************************************ *
       ***************************************  删  ***************************************
    * ************************************************************************************* */

    /**
    * 根据Id，删除${className}
    * TODO 补充调整代码
    *
    * @param id
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> deleteById(@RequestParam("id") @NotEmpty String id) {
//      service.deleteById(id);
//      return ResponseEntity.ok(InvokeResult.ok());
//  }

    /**
    * 根据Ids，删除多个${className}
    * TODO 补充调整代码
    *
    * @param command
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> deleteByIds(@RequestParam("ids") @NotNull String[] ids) {
//      service.deleteByIds(ids);
//      return ResponseEntity.ok(InvokeResult.ok());
//  }

    /* ************************************************************************************ *
       ***************************************  改  ***************************************
    * ************************************************************************************* */

    /**
    * 根据Id，更新${className}
    * TODO 补充调整代码
    *
    * @param command
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> update(@RequestBody @Valid ${className}UpdateCommand command) {
//      ${className} entity = assembler.to${className}(command);
//      service.update(entity);
//      return ResponseEntity.ok(InvokeResult.ok());
//  }

    /* ************************************************************************************ *
       ***************************************  查  ***************************************
    * ************************************************************************************* */

    /**
    * 根据ID获取${className}
    * TODO 补充调整代码
    * @param id
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> getById(@RequestParam("id") @NotEmpty String id) {
//      InvokeResult invokeResult;
//      ${className} entity = service.getById(id);
//      if (null == entity) {
//          invokeResult = InvokeResult.passNoData();
//      } else {
//          invokeResult = InvokeResult.ok(entity);
//      }
//      return ResponseEntity.ok(invokeResult);
//  }

    /**
    * 根据分页参数以及条件参数获取客户端分页列表
    * TODO 补充调整代码
    *
    * @param page
    * @param command
    * @return
    */
//  @Override
//  public ResponseEntity<InvokeResult> getPage(@Valid ${className}PageCommand command) {
//      PageResult page = command.getPageResult() ;
//      ${className} entity = assembler.to${className}(command);
//      PageResult page = command.getPageResult();
//      page = service.getPageByQuery(page, entity);
//      InvokeResult invokeResult;
//      if (null == page || null == page.getPageData() || page.getPageData().size() <= 0) {
//          invokeResult = InvokeResult.passNoData();
//      } else {
//          invokeResult = InvokeResult.ok(page);
//      }
//      return ResponseEntity.ok(invokeResult);
//    }


}